
import hermes.controle.ClasseNegocio;
import hermes.persistencia.ControlePersistencia;
import hermes.persistencia.mapeadores.*;
import java.util.ArrayList;
import org.brazilutils.br.cpfcnpj.*;
import org.brazilutils.br.uf.ie.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Marcelo
 */
public class Persiste {

    public boolean persisteFormulario(ClasseMapeadora cm, ArrayList parametros, ArrayList al) {
        ArrayList arrayAtributos = new ArrayList();
        ControlePersistencia control = new ControlePersistencia();
        ClasseNegocio cn = cm.getIntanciaClasseNegocio();
        String[] campos = cm.getCamposBancoDados();
        for (int i = 0; i < campos.length; i++) {
            arrayAtributos.add(al.get(parametros.indexOf(campos[i])));
        }
        cn.setTodosAtributosParaGravar(arrayAtributos);
        return control.inserir(cn, cm);
    }

    public boolean persisteUsuario(ArrayList parametros, ArrayList al) {
        MapeadorUsuario cm = new MapeadorUsuario();
        return this.persisteFormulario(cm, parametros, al);
    }

    public boolean persisteCidade(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorCidade cm = new MapeadorCidade();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteEstado(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorEstado cm = new MapeadorEstado();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteFamilia(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorFamilia cm = new MapeadorFamilia();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteFornecedor(ArrayList arrayNomes, ArrayList arrayValores) {
        ControlePersistencia control = new ControlePersistencia();
        InscricaoEstadual go = new InscricaoEstadualGO();
        MapeadorFornecedor cm = new MapeadorFornecedor();
        String cnpj = arrayValores.get(arrayNomes.indexOf("cnpj")).toString();
        String ie = arrayValores.get(arrayNomes.indexOf("inscEstadual")).toString();
        if ((Cnpj.isValid(cnpj))/* && (go.validate(ie))*/) {
            if (this.persisteFormulario(cm, arrayNomes, arrayValores)) {
                MapeadorEndereco cme = new MapeadorEndereco();
                ControlePersistencia cp = new ControlePersistencia();
                ArrayList<ClasseNegocio> t = cp.sqlBuscar(cm, "cnpj", cnpj);
                arrayNomes.add("idObjProprietario");
                arrayValores.add(t.get(0).getIdObjeto());
                if (this.persisteFormulario(cme, arrayNomes, arrayValores)) {
                    MapeadorTelefone cmt = new MapeadorTelefone();
                    if (this.persisteFormulario(cmt, arrayNomes, arrayValores)) {
                      //  control.doCommit();
                        return true;
                    }
                }
            }
//            control.doRollback();

        }
        return false;
    }

    public boolean persisteOrdemDeCompra(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorOrdemDeCompra cm = new MapeadorOrdemDeCompra();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteProduto(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorProduto cm = new MapeadorProduto();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteProposta(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorProposta cm = new MapeadorProposta();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteSolicitacao(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorSolicitacao cm = new MapeadorSolicitacao();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }

    public boolean persisteTransportadora(ArrayList arrayNomes, ArrayList arrayValores) {
        ControlePersistencia control = new ControlePersistencia();
 //       control.autoCommitOff();
        InscricaoEstadual go = new InscricaoEstadualGO();
        MapeadorTransportadora cm = new MapeadorTransportadora();
        String cnpj = arrayValores.get(arrayNomes.indexOf("cnpj")).toString();
        String ie = arrayValores.get(arrayNomes.indexOf("inscEstadual")).toString();
        if (this.persisteFormulario(cm, arrayNomes, arrayValores)) {
            MapeadorEndereco cme = new MapeadorEndereco();
            ControlePersistencia cp = new ControlePersistencia();
            ArrayList<ClasseNegocio> t = cp.sqlBuscar(cm, "cnpj", cnpj);
            arrayNomes.add("idObjProprietario");
            arrayValores.add(t.get(0).getIdObjeto());
            if (this.persisteFormulario(cme, arrayNomes, arrayValores)) {
                MapeadorTelefone cmt = new MapeadorTelefone();
                if (this.persisteFormulario(cmt, arrayNomes, arrayValores)) {
     //               control.doCommit();
                    return true;
                }
            }
        }
   //     control.doRollback();
        return false;

    }

    public boolean persisteUnidade(ArrayList arrayNomes, ArrayList arrayValores) {
        MapeadorUnidade cm = new MapeadorUnidade();
        return this.persisteFormulario(cm, arrayNomes, arrayValores);
    }
}
